﻿#pragma once

#include <numeric>
#include "Math/Rect.h"
#include "TextArrangeParameters.h"
#include "Font/Font.h"
#include "ArrangedText.h"

class RTexture2D;

//静态文本排版工具
//所谓静态文本，指的是文本内容不会变化的文本
//静态文本排版工具，用于将文本内容排版成一张图片，以便于渲染

//排版工具计算流程：
//1.在排版时需要在参数中指定一个矩形绘制区域，排版工具会将文本内容排版到这个区域中
//如果没有绘制区域，那就不可能实现水平居中、分散对齐之类的功能
//绘制区域左上角为(0,0)，右下角为(RenderAreaSize.X,RenderAreaSize.Y)
//2.依据换行符和换行规则，将字符拆分成多个行
//3.计算每行的宽度和高度(此时不考虑分散对齐，假定所有字符都是从左到右紧密排列的)，行数据存在一个SLineRenderInfo结构体中
//3.依据行大小、绘制区域的大小和对齐方式，计算出
//①最终输出图片的大小②每行在最终图片中的偏移量②每个字符在最终图片中的位置
class WHENGINE_API CStaticTextArranger 
{
public:
    //排版文本
    void ArrangeText(const STextArrangePapameters& InParameters);


    //获取排版结果
    const SArrangedText& GetArrangeResult()const
    {
        return Result;
    }

protected:  
    SArrangedText Result;



};

